package com.xyyhome.web.system.controller;

import com.xyyhome.common.YAjaxResult;
import com.xyyhome.common.YConstant;

/**
 * 基础控制器
 * Created by ty850 on 2017/5/21.
 */
public abstract class YSBaseController {

    /**
     * 跳转到页面
     * @param pageName 页面路径+名称
     * @return 页面
     */
    public String toPage(String pageName) {
        return "web/" + pageName;
    }

    /**
     * 重定向到页面
     * @param pageName 页面路径+名称
     * @return 页面
     */
    public String redirect(String pageName) {
        return "redirect:" + pageName;
    }

    /**
     * 转发发哦页面
     * @param pageName 页面路径+名称
     * @return 页面
     */
    public String forward(String pageName) {
        return "forward:" + pageName;
    }

    private static final YAjaxResult AJAX_RESULT_SUCCESS = new YAjaxResult();
    private static final YAjaxResult AJAX_RESULT_FAILED = new YAjaxResult();
    static {
        AJAX_RESULT_FAILED.setSuccess(false);
        AJAX_RESULT_FAILED.setMsg(YConstant.FAILED);
    }

    /**
     * 返回表示成功的AJAX数据
     * @return AJAX数据对象
     */
    public YAjaxResult success() {
        return AJAX_RESULT_SUCCESS;
    }

    /**
     * 返回表示失败的AJAX数据
     * @return AJAX数据对象
     */
    public YAjaxResult failed() {
        return AJAX_RESULT_FAILED;
    }

    /**
     * 返回表示成功的AJAX数据
     * @param msgOrData 消息文本或者数据对象，传入String类型对象时为消息文本，否则为数据对象
     * @return AJAX数据对象
     */
    public YAjaxResult success(Object msgOrData) {
        YAjaxResult result = new YAjaxResult();
        if (msgOrData instanceof String)
            result.setMsg((String) msgOrData);
        else
            result.setData(msgOrData);
        return result;
    }

    /**
     * 返回表示成功的AJAX数据
     * @param msg 消息文本
     * @param data 数据对象
     * @return AJAX数据对象
     */
    public YAjaxResult success(String msg, Object data) {
        YAjaxResult result = new YAjaxResult();
        result.setMsg(msg);
        result.setData(data);
        return result;
    }

    /**
     * 返回表示失败的AJAX数据
     * @param msgOrData 消息文本或者数据对象，传入String类型对象时为消息文本，否则为数据对象
     * @return AJAX数据对象
     */
    public YAjaxResult failed(Object msgOrData) {
        YAjaxResult result = new YAjaxResult();
        result.setMsg(YConstant.FAILED);
        result.setSuccess(false);
        if (msgOrData instanceof String)
            result.setMsg((String) msgOrData);
        else
            result.setData(msgOrData);
        return result;
    }

    /**
     * 返回表示失败的AJAX数据
     * @param msg 消息文本
     * @param data 数据对象
     * @return AJAX数据对象
     */
    public YAjaxResult failed(String msg, Object data) {
        YAjaxResult result = new YAjaxResult();
        result.setSuccess(false);
        result.setMsg(msg);
        result.setData(data);
        return result;
    }

}
